package com.example.librarymanagementproject2.mapper;

import com.example.librarymanagementproject2.model.entity.Book;
import com.example.librarymanagementproject2.model.entity.BookCategory;

/**
 * @InterfaceName BookMapper
 * @Description TODO
 * @Author Kx
 * @Date 2025/10/27 15:29
 * @Version 1.0
 */
public interface BookMapper {
    /**
     * @author: kx
     * @date: 2025/10/27 15:53
     * @param category : 图书分类信息
     * @description: 插入图书分类信息
    */
    void insertBookCategory(BookCategory category);

    /**
     * @author: kx
     * @date: 2025/10/27 16:05
     * @param name : 图书分类名称
     * @return com.example.librarymanagementproject2.model.entity.BookCategory
     * @description: 根据名称查询图书分类信息
    */
    BookCategory getBookCategoryByName(String name);

    /**
     * @author: kx
     * @date: 2025/10/27 16:17
     * @param id : 图书分类编号
     * @return com.example.librarymanagementproject2.model.entity.BookCategory
     * @description: 根据编号查询图书分类信息
    */
    BookCategory getBookCategoryById(Long id);

    /**
     * @author: kx
     * @date: 2025/10/27 16:34
     * @param book : 图书信息
     * @description: 插入图书信息
    */
    void insertBook(Book book);

    /**
     * @author: kx
     * @date: 2025/10/27 19:10
     * @param bookName : 图书名称
     * @return com.example.librarymanagementproject2.model.entity.Book
     * @description: 根据名称查询图书信息
    */
    Book getBookByName(String bookName);

    /**
     * @author: kx
     * @date: 2025/10/28 10:19
     * @param bookId : 图书ID
     * @description: 根据ID查询图书信息
    */
    Book getBookById(Long bookId);

    /**
     * @author: kx
     * @date: 2025/10/28 15:39
     * @param bookId : 图书id
     * @description: 扣减图书库存信息
    */
    void updateBookStock(Long bookId);

    /**
     * @author: kx
     * @date: 2025/10/28 16:19
     * @param bookId : 图书id
     * @description: 归回图书回填库存
    */
    void returnBookStock(Long bookId);

    /**
     * @author: kx
     * @date: 2025/10/28 16:05
     * @param book : 图书信息
     * @description: 修改图书状态
    */
    void updateBookStatus(Book book);
}
